【MATLAB第24期】基于matlab的智能进化算法与LSTM

您所在的位置:网站首页 matlab state函数 【MATLAB第24期】基于matlab的智能进化算法与LSTM

【MATLAB第24期】基于matlab的智能进化算法与LSTM

2023-03-25 17:25| 来源: 网络整理| 查看: 265

## 【MATLAB第24期】基于matlab的智能进化算法与LSTM-Attention注意力机制结合的回归预测模型## 运行环境:

matlab2020a,cpu

## 数据:

本文采用600行6输入1输出数据样本,其中前500(90%训练,10%验证),后100进行测试。

## 思路:

LSTM_Attention的代码网上基本有售卖,本文在基础上进行优化,即通过鲸鱼优化算法WOA优化LSTM_Attention模型的3个超参数,分别为隐含层神经元数量、最小批处理数量,最大训练次数,目标函数选用测试集的1-R2作为评价指标,3个超参数上下限为:

lb = [30 5 10 ];%三个参数的下限 ub = [150 20 50 ];%三个参数的上限## 参数设置:%LSTM结构参数 LearnRateDropFactor = 0.9;%学习率下降因子 LearnRate = 0.01;%初始学习率 LearnRatestep=5;%每5轮更新学习率 executionEnvironment = "auto";%运行环境为自动 validatasize=10%;%训练过程中验证集比例为10% validationFrequency = 10;%每10次训练验证1次 gradientDecayFactor = 0.9;%梯度衰减因子为0.9 squaredGradientDecayFactor = 0.999;%平方梯度衰减因子为0.999 gradientThreshold = 6;%梯度阈值为6 loss = mse;%训练过程中损失函数为mse函数 %WOA参数 SearchAgents_no = 8; % 种群数量 8 Max_iteration = 5; % 迭代次数 5 ```## 注意力机制部分代码:%% 输入部分 % Lstm_Y LSTM输出序列(CBT) % Train_Y 训练样本标签 % params 训练权重参数 % state 状态变量 %% 需要学习的参数 weight = params.cnn.weight; recurrentWeights = params.lstm.recurrentWeights; bias = params.lstm.bias; %% 不同批次间传递的参数(这里假设每一轮epoch中,不同Batch间的state是传递的,但不学习; % 不同epoch之间的state重置) h0 = state.lstm.h0; c0 = state.lstm.c0; [Lstm_Y,h0,c0] = lstm(Train_X,h0,c0,weight,recurrentWeights,bias); %% Attention Attentionweight = params.attention.weight; % 计算得分权重 Ht = Lstm_Y(:,:,end); % 参考向量 %% Attention输出 weight1 = params.attenout.weight1; bias1 = params.attenout.bias1; weight2 = params.attenout.weight2; bias2 = params.attenout.bias2; Hthat = fullyconnect(Vt,weight1,bias1) + fullyconnect(Ht,weight2,bias2); %% 全连接层前置层(降维) LastWeight = params.fullyconnect.weight1; LastBias = params.fullyconnect.bias1 ; FullyconnectInput = fullyconnect(Hthat,LastWeight,LastBias); FullyconnectInput = relu(FullyconnectInput); %% Fullyconnect输入参数 fullyweight = params.fullyconnect.weight2; fullybias = params.fullyconnect.bias2; output_Y = fullyconnect(FullyconnectInput,fullyweight,fullybias); output_Y = squeeze(output_Y); output_Y = relu(output_Y);## 预测结果:

优化前超参数设置为【50,10,10】即神经元50个,训练次数及最小批为10.

优化后为【89 7 36】

优化后:

均方根误差(RMSE):185.935

平均绝对误差(MAE):136.0886

平均相对百分误差(MAPE):3.5524%

R-square决定系数(R2):0.88852

优化前:

均方根误差(RMSE):259.176

平均绝对误差(MAE):218.3789

平均相对百分误差(MAPE):6.2451%

R-square决定系数(R2):0.77565

## 分析:

案例数据精度仍存在一些不足,除了超参数范围对结果的影响,进化算法选取及参数设置以外,数据的选择,目标函数的选择以及运行环境(CPU/GPU)对结果影响也较大。 研究发现,通过试验发现GPU的精度要明显高一些,其次,选择1-R2作为目标函数比选择RMSE均方根误差作为目标函数的精度高一些。

## 代码获取:

点击下方链接,即可获得下载链接。

【获取链接】

创作不易,感谢理解。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3